package com.project.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.project.bean.ProductBean;
import com.project.bean.UserBean;
import com.project.mapper.IProductMapper;
import com.project.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ProductServiceImpl implements IProductService {
    @Autowired
    private IProductMapper productMapper;

    /**
     * 分页动态查询
     *
     * @param pageNo   页码
     * @param name     商品名
     * @param startNum 开始数量
     * @param endNum   结束数量
     * @param price    是否定义销售价（不限，已定义销售价，未定义销售价）
     * @param type     商品类型
     * @return 分页集合
     */
    @Override
    public IPage<ProductBean> findByItem(Integer pageNo, String name, Integer startNum, Integer endNum, String price, String type) {
        QueryWrapper<ProductBean> qw = new QueryWrapper<>();
        if (name != null && name.length() != 0) {
            qw.like("p_name", name);
        } else if (startNum != null) {
            qw.ge("p_num", startNum);
        } else if (endNum != null) {
            qw.le("p_num", endNum);
        } else if (price != null && price.length() != 0) {
            qw.like("p_sellMoney", price);
        } else if (type != null && type.length() != 0) {
            qw.like("p_type", type);
        }
        return productMapper.selectPage(new Page<>(pageNo, 3), qw);
    }
//    1、用户输入商品编号，失去焦点时，查询商品编号对应的商品。
//    2、如果商品编号不存在，所有文本框全部可用，将操作属性设置为add。如果商品编号存在，则商品名称、品牌、类别、选择图片全部不可用。
//    3、用户点添加按钮，判断操作属性是否为add。如果是add，完成库存商品添加。然后，再做采购车操作。如果该商品在采购车中存在，则修改采购数量，如果该商品在采购车中不存在，则新加采购记录。

    /**
     * 按编号查询
     *
     * @param id 商品编号
     * @return 商品对象
     */
    @Override
    public ProductBean findById(String id) {
        return productMapper.selectById(id);
    }

    /**
     * 按id修改价格
     *
     * @param id    商品编号
     * @param price 商品价格
     */
    @Override
    public void update(String id, Integer price) {
        ProductBean product = productMapper.selectById(id);
        product.setSellMoney(price);
        productMapper.updateById(product);
    }
}
